package com.bookocean.controller.dto;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 云汉页面书摘DTO
 * 
 * @author BookOcean
 * @since 2024-01-01
 */
@Data
public class CloudHanPostDto {

    /**
     * 书摘ID
     */
    private Long id;

    /**
     * 书摘内容
     */
    private String content;

    /**
     * 用户感想
     */
    private String userFeel;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 点赞数量
     */
    private Integer likeCount;

    /**
     * 评论数量
     */
    private Integer commentCount;

    /**
     * 收藏数量
     */
    private Integer favoriteCount;

    /**
     * 当前用户是否点赞
     */
    private Boolean isLiked;

    /**
     * 当前用户是否收藏
     */
    private Boolean isFavorited;

    /**
     * 书籍信息
     */
    private BookInfo book;

    /**
     * 用户信息
     */
    private UserInfo user;

    /**
     * 评论列表（预览用）
     */
    private List<CommentInfo> comments;

    /**
     * 书籍信息内部类
     */
    @Data
    public static class BookInfo {
        /**
         * 书籍ID
         */
        private Long id;

        /**
         * 书籍标题
         */
        private String title;

        /**
         * 书籍作者
         */
        private String author;

        /**
         * 书籍封面URL
         */
        private String coverUrl;

        /**
         * 书籍分类
         */
        private Integer category;
    }

    /**
     * 用户信息内部类
     */
    @Data
    public static class UserInfo {
        /**
         * 用户ID
         */
        private Long id;

        /**
         * 用户昵称
         */
        private String nickname;

        /**
         * 用户头像
         */
        private String avatar;

        /**
         * 用户称号
         */
        private String title;
    }

    /**
     * 评论信息内部类
     */
    @Data
    public static class CommentInfo {
        /**
         * 评论ID
         */
        private Long id;

        /**
         * 用户ID
         */
        private Long userId;

        /**
         * 用户昵称
         */
        private String nickname;

        /**
         * 评论内容
         */
        private String content;

        /**
         * 评论时间
         */
        private LocalDateTime createdAt;
    }
}
